package com.yfp.device.utils;

import com.yfp.device.enums.PaymentPlatformType;
import lombok.extern.slf4j.Slf4j;

import java.util.Optional;

@Slf4j
public class AppUserAgentUtils {

    /**
     * 判断支付应用的类型
     * 微信扫一扫：
     * 苹果手机微信只包含关键字段：MicroMessenger
     * 安卓手机微信含关键字段：MicroMessenger 和 WeChat
     * 支付宝扫一扫：
     * 苹果手机支付宝包含关键字段：AlipayClient 和 Alipay
     * 安卓手机支付宝包含关键字段：AlipayClient 和 Alipay
     * 之所以要判断两个字段，是为了让判断更精准
     *
     * @param userAgent HTTP请求头User-Agent
     * @return Optional<PayAppType>
     */
    public static Optional<PaymentPlatformType> getPayAppType(String userAgent) {
        if (userAgent == null) return Optional.empty();
        if (userAgent.contains("AlipayClient") && userAgent.contains("Alipay")) {
            return Optional.of(PaymentPlatformType.Alipay);
        } else if (userAgent.contains("MicroMessenger") && userAgent.contains("WeChat")) {
            return Optional.of(PaymentPlatformType.WeChatPay);
        } else if (userAgent.contains("MicroMessenger") && userAgent.contains("iPhone")) {
            return Optional.of(PaymentPlatformType.WeChatPay);
        } else {
            log.warn("没有解析到预想的支付应用类型,UserAgent的值是:{}", userAgent);
            return Optional.empty();
        }
    }
}